#ifndef __BOOT_H__
#define __BOOT_H__

//=================================64位================================

#define MEMORY_INFO_COUNT 0x0000                 // 内存结构计数器存放位置 偏移量
#define MEMORY_INFO_ADDR (MEMORY_INFO_COUNT + 4) // 内存结构存放位置
#define MEMORY_INFO_DS 0x8000                    // 内存结构计数器存放位置 DS 基地址
#define SYSTEM_BASE_ADDR 0x100000                // 内核存放内存地址
#define SYSTEM_DISK_OFFSET 0x5000                // 内核在硬盘的起始扇区号
#define SYSTEM_DISK_SIZE 0x2048                  // 拷贝内核大小，单位是（512 byte）
#define STACK_32_ADDR 0x7c00                     // 栈基址(进入内核前)
#define STACK_64_ADDR 0xffff                     // 栈基址(进入内核后)
#define PML4_TMP_BASE_ADDR 0x90000               // Long Mode的页表基址
#define VGA_BASE_ADDR      0xb8000               //进入内核前使用的显存地址
#define PDPT_TMP_BASE_ADDR (PML4_TMP_BASE_ADDR + 0x1000)
#define PDT_TMP_BASE_ADDR (PDPT_TMP_BASE_ADDR + 0x1000)
#define SCREEN_RESOLUTION_X 1024 // 屏幕像素值（长）
#define SCREEN_RESOLUTION_H 768  // 屏幕像素值（宽）
#define TO_STRING_AS(x) #x
#define SCREEN_RESOLUTION_STR(width, height) "Not supported " TO_STRING_AS(width) "x" TO_STRING_AS(height) " mode\n"
#define VESA_MODE_INFO_ADDR 0x8000 // vesa模式信息结构存放地址 偏移量
#define VESA_MODE_INFO_DS 0x8000   // vesa模式信息结构存放地址 基地址
#define KERNEL_NAME "ENJOY   BIN"
#define FAT1_MEM_OFFSET 0x600000   // FAT1临时存放位置
#define FAT1_LOAD_SIZE 0x5000      // 临时加载 10M/512=20480 个扇区
#define ROOT_CLUS_MEM_OFFSET 0x100000 // 根目录临时存放位置

#endif
